Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado
On Sep 14, 8:08 pm, "hotplainr...@gmail.com" <hotplainr...@gmail.com> wrote: > Hi guys, > > Thanks for helping me for the past few weeks. I've managed to get > CUBLAS and other CUDA programs working in IDL. What I have now for you > guys is this. > > Here is the code > > N = 181 > N2 = N^2 > a = fltarr(N2, 141) > help,a > > A FLOAT = Array[32761, 141] > > N = 182 > N2 = N^2 > a = fltarr(N2, 141) > % Array dimensions must be greater than 0 > % Execution halted at: TEST 5 /home/hpr/test.pro > % $MAIN$ > IDL> > > How big can the index go? Its because I need N = 100 to 1000 > > Regards > Zaki The problem is that the line N = 182 sets N to a 16-bit signed integer (max size 32767-ish). When you square it (33124), it overflows and becomes negative (-32412). Use something like N=182L (long integer with max size about 2 billion) or N=2. (floating point) As long as you have the RAM, arrays can have millions or billions (i think) of elements, so you'll be fine. chris
On Sep 15, 6:53 pm, Chris <beaum...@ifa.hawaii.edu> wrote: > On Sep 14, 8:08 pm, "hotplainr...@gmail.com" <hotplainr...@gmail.com> > wrote: > > > >> Hi guys, > >> Thanks for helping me for the past few weeks. I've managed to get >> CUBLAS and other CUDA programs working in IDL. What I have now for you >> guys is this. > >> Here is the code > >> N = 181 >> N2 = N^2 >> a = fltarr(N2, 141) >> help,a > >> A FLOAT = Array[32761, 141] > >> N = 182 >> N2 = N^2 >> a = fltarr(N2, 141) >> % Array dimensions must be greater than 0 >> % Execution halted at: TEST 5 /home/hpr/test.pro >> % $MAIN$ >> IDL> > >> How big can the index go? Its because I need N = 100 to 1000 > >> Regards >> Zaki > > The problem is that the line > N = 182 > sets N to a 16-bit signed integer (max size 32767-ish). When you > square it (33124), it overflows and becomes negative (-32412). Use > something like > N=182L (long integer with max size about 2 billion) or > N=2. (floating point) > > As long as you have the RAM, arrays can have millions or billions (i > think) of elements, so you'll be fine. > > chris Thanks chris, that resolved the problem.
hotplainrice@gmail.com wrote: > Hi guys, > > Thanks for helping me for the past few weeks. I've managed to get > CUBLAS and other CUDA programs working in IDL. What I have now for you > guys is this. > > Here is the code > > N = 181 > N2 = N^2 > a = fltarr(N2, 141) > help,a > > A FLOAT = Array[32761, 141] > > N = 182 > N2 = N^2 > a = fltarr(N2, 141) > % Array dimensions must be greater than 0 > % Execution halted at: TEST 5 /home/hpr/test.pro > % $MAIN$ > IDL> > > How big can the index go? Its because I need N = 100 to 1000 Just for the records, IDL 32-bit can have arrays with a maximum of about 2^31/N elements, where N is the size in byte of one element (i.e. 1 for bytes, 2 for int, 4 for long int and floats, etc. etc.). On the orther hand, IDL 64 bits can (in principle) allocate arrays so large that you won't be able to store them anyway (at least for the next few years or so) Cheers, Paolo > > Regards > Zaki