Igor Pro ReadMe (64-bit)

This file describes the 64-bit version of Igor 6, known as IGOR64. As of this writing (May 2016), IGOR64 for is available for Igor 6 on Windows only.

We are working on a 64-bit version for Macintosh as part of our Igor 7 project, which should be available this year.

IGOR64 will be of interest only to users who need to load gigabytes of data into Igor at one time. This may be in the form of several very large waves (e.g., 16 waves of .5 GB each) or many smaller waves (e.g., 1000 waves of 4 MB each).

If you are not dealing with gigabytes of data, you should stick with the standard 32-bit version of Igor. IGOR64 will afford you no benefits and is likely to have more bugs.

IGOR64 does not run faster than IGOR32 on a 64-bit operating system.

IGOR64 System Requirements

IGOR64 requires a 64-bit Windows operating system: Windows XP-64, Windows Vista-64, Windows 7-64, or Windows 8-64.

We recommend that you have at least 4 GB of physical memory. More is better.

You should check the size of your virtual memory paging file. Details are provided below under Virtual Memory Paging File.

IGOR64 Licensing

If you have an Igor Pro 6 license you are eligible to use IGOR64. IGOR64 uses the same serial number and license activation key as IGOR32 6.0 and later.

Installing IGOR64

You must install IGOR32 version 6.10 or later before updating to IGOR64. Download the latest IGOR32 installer from here: setupIgor6.exe or here: setupIgor6.zip

The IGOR64 updater adds a 64-bit application and extensions into the IGOR32 folder. Download the IGOR64 updater from here: setupIgor6-64.exe or here: setupIgor6-64.zip

Double-click the setupIgor6-64.exe file to run the IGOR64 updater. The updater adds the following to your IGOR32 folder:

Igor64.exe Application file
Igor Extensions (64-bit) Folder containing 64-bit XOPs and other supporting files
More Extensions (64-bit) Folder containing additional XOPs that you can activate

Before you run IGOR64, read the rest of this file to understand issues involved with IGOR64.

Launching IGOR64

The IGOR64 application is not "officially" installed. That is, it is not listed in the Windows registry as being the application associated with Igor files. If you double-click an Igor file, Windows will launch and run IGOR32. Therefore, if you want to run IGOR64, you must double-click the Igor64.exe file in your Igor Pro folder, not an Igor file.

You may find it useful to create a shortcut for Igor64.exe and put the shortcut on your desktop.

It is possible to run IGOR32 and IGOR64 at the same time. If you are running IGOR32 6.20 or later, double-clicking either Igor.exe or Igor64.exe launches an instance of Igor even if another instance is already running.

If you are running IGOR32 pre-6.20 and you want to run IGOR64 in a separate instance:

  1. Right-click the Igor64.exe icon.
  2. Press and hold the control key.
  3. Choose Open from the contextual menu.

When you see that IGOR64 is starting up you can release the control key.

64-bit Background Information

IGOR32 works in a virtual address space of 2 GB, 3 GB or 4 GB depending on the operating system. This is explained under Memory Management.

A 64-bit address is capable of addressing 16 exabytes of memory, which is 16 billion GB or 16E18 bytes - see http://en.wikipedia.org/wiki/64-bit.

However, current 64-bit processor architectures and the Windows OS impose further limits. In 64-bit Windows operating systems each process can address 8 terabytes (about 8000 GB - see MSDN). So IGOR64 works in a virtual address space of 8 terabytes. In practice, you are unlikely to hit this limit.

The limiting factors in practice then become:

  1. How much physical RAM do you have?
  2. How much virtual memory swap space (on disk) do you have?
  3. How much patience do you have while Igor loads, processes, graphs and saves very large amounts of data?

Your actual maximum virtual memory is determined by the size of your virtual memory paging file, as explained in the next section.

If you load more data into Igor than you have physical memory, the operating system will have to swap data from physical memory to disk. Depending on your application, this may or may not create intolerable delays.

Your best bet is to install enough physical memory that swapping is not necessary. Sometimes this is not possible and you will have to live with the delays that come with swapping.

You may find that, even though you have enough virtual memory or even enough physical memory to hold all of your data at once, you have so much data that it is not practical to load it into memory. In this case you will need to devise a strategy for accessing your data in smaller sections.

Running IGOR64 on a Virtual Windows OS

Macintosh users may be tempted to use VMWare Fusion or Parallels with 64-bit Windows in order to run IGOR64. We did some very simple testing using Windows Vista 64 running under VMWare Fusion on a Mac Pro with 8 GB of memory. Here is what we found.

The amount of RAM allocated to the virtual machine makes a big difference. With just the default 2 GB allocated to the virtual machine, memory swapping made Igor run very slowly for very large waves. Allocating the 7 GB to the virtual machine made the entire machine, both Windows and Macintosh, almost unuseable.

We tested with 5 GB allocated to the virtual machine. We did three tests - a huge double-precision wave (536,871,012 points), a huge unsigned byte wave (8,589,934,592 points) and 1000 merely big unsigned byte waves (2,097,152 points each). We made the waves, assigned the number 1 to them, and killed the waves. Here are the results, comparing a VMWare virtual machine against the same operating system started up directly, using Boot Camp (times in seconds):

Virtual Machine Boot Camp
Huge DP wave: make 42.25 1.81
assign 61.65 19.30
kill 0.23 0.18
Huge byte wave: make 260.9 19.5
assign 2075.6 457.5
kill 2.05 1.2
1000 big waves: make 18.70 0.92
assign 92.03 89.17
kill 0.167 0.133

Bottom line: It looks like the virtual machine performs acceptably for many big waves, but you may want to think twice about using a virtual machine for working with huge waves. The slow performance for making big waves is probably 0K - you only have to do it once.

Virtual Memory Paging File

Although IGOR64 can, in theory, address 8 terabytes of virtual memory on Windows, in practice the limit is set by the size of your virtual memory paging file. This is a file (or multiple files) on disk that the operating system uses when physical memory is filled up. The OS "swaps" data between disk and physical memory to allow you to address more virtual memory than you have physical memory.

Assume you have 4 GB of physical memory and plan to load 8 GB of data into IGOR64 at one time. Your virtual memory paging file must be set to at least about 9 GB. If you plan to run a lot of other programs while running Igor then you will need a larger virtual memory paging file.

You must be running as Administrator to change the virtual memory paging file size.

On Windows XP-64:

  • Click Start.
  • Right-click My Computer.
  • Choose Properties. The System control panel appears.
  • Click the Advanced tab.
  • Click the Settings button in the Performance section.
  • Click the Advanced tab.
  • Click the Change button in the Virtual Memory section.
  • Set the Maximum Size for the paging file to the desired size (at least 9 GB in our example)

On Windows Vista/7/8/10-64:

  • Click Start.
  • Right-click Computer.
  • Choose Properties. The System control panel appears.
  • Click Advanced System Settings. The System Properties window appears.
  • Click the Advanced tab.
  • Click the Settings button in the Performance section.
  • Click the Advanced tab.
  • Click the Change button in the Virtual Memory section.
  • Uncheck Automatically Manage Paging File Size if it is checked.
  • Select the Custom size radio button.
  • Set the Maximum Size for the paging file to the desired size (9 GB in our example)

IGOR64 Limits

Although IGOR64 can, in theory, address 8 terabytes of virtual memory on Windows, Igor checks for reasonable values for the size of waves. This is to catch programming goofs that could cause such long delays that it would appear that your machine had hung. The limits are ten times as large as IGOR32 and it is very unlikely that they will be a practical restriction for your work. But if you do run into the limits and feel they should be raised, let us know.

IGOR64 Experiment Files

IGOR64 can store waves larger than the 32 bit limit in packed experiment files (but not in unpacked files.) Huge wave storage uses a new 64 bit capable record format and is supported only for numeric waves, not for text or reference waves.

Such experiment files will be at least partly readable by IGOR32 6.1 or later. Igor 6.1 does not know about the new records used for huge waves and will simply skip over them.Unless the waves are used in graphs or other windows, there will be no indication the data was skipped.

IGOR32 6.2 (including beta versions released after IGOR64) does know about the new records used for huge waves. By default, it will attempt to read new the records but a lack of memory warning will be given if they can not be loaded. It can also be configured to silently skip the new records and can be configured to partly load the data. The later mode is especially useful when a huge wave is used in a graph or image as it avoids the errors that would occur as the window is being regenerated.

Note that even if you don't use huge waves, you can still create experiments containing so much data that IGOR32 can not load it all.

Beta testers: Here are some controls you have over the above. Let us know if you think the default values should be changed. Remember that SetIgorOption settings last only until you quit Igor. Also note that only versions of 32 bit 6.2 released after March 25th contain this code.

SetIgorOption UseNewDiskHeaderBytes= bytes

When non-zero, if the size of the wave data exceeds this value, the new 64 bit capable record type will be used. The default value for IGOR64 is 100000000 (100MB) and for IGOR32 is 0 (turned off.) If you want the new record type to be used only when it absolutely has to be, use 2E9 (2GB.)

SetIgorOption UseNewDiskHeaderCompress= bytes

When non-zero, if the size of the wave data exceeds this value and when the new 64 bit capable record type is used, the data will be compressed. The default value is 0 (off) because, although you can get substantial file size reduction for some data types, there is also a substantial speed penalty when saving the experiment.

SetIgorOption MaxBytesReadingWave= bytes
SetIgorOption BigWaveLoadMode= mode

These two control how IGOR32 acts when loading experiments with the new record types. Mode can be 0 (the default) for no special action. Igor will attempt to read all the records. If mode is 1, then any waves with data size exceeding the MaxBytesReadingWave value will be silently skipped. If mode is 2, then any waves with data size exceeding the MaxBytesReadingWave value will be downgraded to a smaller size and only that portion of the data will be loaded. Such partial waves will be marked as locked and bit 1 of the lock flag will also be set. In addition, the wave note will contain the text "**PARTIAL LOAD**" and a warning dialog will be presented after the experiment loads.

The default value for MaxBytesReadingWave for IGOR32 is 500000000 (500MB).

64-bit XOPs

32-bit XOPs can run only with IGOR32 and 64-bit XOPs can run only with IGOR64.

Most WaveMetrics XOPs have been ported to 64 bits and are installed in either "Igor Extensions (64-bit)" or "More Extensions (64-bit)". As of this writing, the following WaveMetrics XOPs have not yet been ported to 64 bits:

  • SndLoadSaveWave
  • MLLoadWave
  • TDM

If you have written your own XOP and you want to port it to 64-bits, you will need Igor XOP Toolkit 6 which is currently under development. Send a note to support@wavemetrics.com and request a beta release of XOP Toolkit 6. Let us know what you are up to just for our edification.

If you depend on a third-party XOP and you want to run IGOR64, contact the author of the third-party XOP and direct him or her to this help file.

Features Not Supported by IGOR64

As mentioned above, some XOPs have not yet been ported to 64-bits.

Since there is no 64-bit version of QuickTime for Windows, IGOR64 does not work with QuickTime. This means that you can not create a QuickTime movie using IGOR64 but you can create AVI movies.

The ImageLoad operation no longer uses QuickTime to open various bitmap graphics file formats. Thus IGOR64 can not load the following formats: PICT, GIF, Photoshop, Silicon Graphics, BMP and Targa. IGOR64 can load these formats: TIFF, JPEG, PNG, raw PNG, and Sun Raster.

Because IGOR64 does not work with QuickTime, the SndLoadSaveWave XOP that loads sound files cannot be ported to IGOR64.

Windows Automation does not work with IGOR64. We may provide this in the future if there is sufficient interest.

64-bit Gizmo

IGOR64 includes a 64-bit version of Igor's 3D graphics plotter called Gizmo. Gizmo is usually limited not by main memory but by the amount of memory on your graphics card. If your Gizmo application is limited by graphics memory, running IGOR64 will not solve the problem. You need to get a fast graphics card with as much graphics memory as possible.

How IGOR64 Was Developed

Porting to 64 bits required thousands of changes to Igor's source code. We did not want to make thousands of changes to the source code used to create IGOR32 because of the likelihood of introducing bugs so we created a new branch of the Igor source code for IGOR64. The new branch also contains a lot of other under-the-hood changes that are not related to 64-bits but IGOR64 is very close to IGOR32 in terms of features.

It is likely that, with all of these changes, we have introduced new bugs into IGOR64. That is why we recommend that you use IGOR32 unless you have a need to load gigabytes of data into Igor 6 at once.

Thanks to our customers who used the Igor 6 version of IGOR64 and contacted us at support@wavemetrics.com, Igor 7 is now available in both 32-bit and 64-bit versions. (Igor 7 has many improvements in the 64-bit code that are not present in Igor 6.)