Pages:
Author

Topic: Phoenix - Efficient, fast, modular miner - page 11. (Read 760569 times)

sr. member
Activity: 378
Merit: 250
August 21, 2011, 05:21:43 PM
Hey, I don't usually thread bump, but my question went completely overlooked.
I was wondering if someone could explain to me the difference between VECTORS and VECTORS2 from the Phatk2 kernel?  From my understanding of past readings, they were originally supposed to be the same.  But I'm finding that VECTORS works faster than VECTORS2 and, obviously, VECTORS4 with my HD5450.

The VECTORS command line = VECTORS2 processing, two hashes processed per iteration.
There is no parsing of a "VECTORS2" command line, if you are typing that, then both vectors options are disabled.

    VECTORS = KernelOption(
        'VECTORS', bool, default=False, advanced=True,
        help='Enable vector support in the kernel?')
    VECTORS4 = KernelOption(
        'VECTORS4', bool, default=False, advanced=True,
        help='Enable vector uint4 support in the kernel?')


VECTORS = VECTORS2

I made that change when I added phatk 2.2 to Phoenix in order to be consistent with previous versions.
I beg to differ Jedi95:
VECTORS = ~14.32 MHash/Sec
VECTORS2 = ~11.97 MHash/Sec
None = ~11.97

So it would appear that the VECTORS2 command option has been removed and VECTORS4 has been left.  So adding VECTORS2 = VECTORS might not be such a bad idea to keep the command line options open.  Either that, or the phatk 2.2 isn't actually being used.
member
Activity: 65
Merit: 10
August 21, 2011, 04:10:09 PM
Hi, how can I print the output of the miner into a file? I do
Code:
for (( j=0; j<$num; j++ )); do
    ./phoenix.py -u http://xyz_$j:[email protected]:3000/  -k poclbm DEVICE=$j VECTORS BFI_INT FASTLOOP=false AGGRESSION=13 > /home/user/miner_log_$j.txt &
    sleep 10
done
so it runs in the background and prints the output into the log_files. But I get a lot of additional unreadable characters in each line looking like this:
Code:
[424.39 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [424.90 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.21 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.38 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.21 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.29 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [424.98 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [424.83 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [19/08/2011 14:07:43] Result: 06c4d93e accepted
All I want to see in the logfile is the time, the speed, the accepted/rejected number and the result. How can I do that?

see my script:

......................

Thanks Zwenny for your workaround, it's a nice idea, but I am asking to the developers for a build-in way to print the output in a nice format into a file. For example in this way:

./phoenix.py -u http://xyz:[email protected]:3000/ -f /path/to/my/miner_log.txt  -k poclbm DEVICE=0 VECTORS BFI_INT FASTLOOP=false AGGRESSION=13
full member
Activity: 219
Merit: 120
August 21, 2011, 03:04:41 PM
Hey, I don't usually thread bump, but my question went completely overlooked.
I was wondering if someone could explain to me the difference between VECTORS and VECTORS2 from the Phatk2 kernel?  From my understanding of past readings, they were originally supposed to be the same.  But I'm finding that VECTORS works faster than VECTORS2 and, obviously, VECTORS4 with my HD5450.

The VECTORS command line = VECTORS2 processing, two hashes processed per iteration.
There is no parsing of a "VECTORS2" command line, if you are typing that, then both vectors options are disabled.

    VECTORS = KernelOption(
        'VECTORS', bool, default=False, advanced=True,
        help='Enable vector support in the kernel?')
    VECTORS4 = KernelOption(
        'VECTORS4', bool, default=False, advanced=True,
        help='Enable vector uint4 support in the kernel?')


VECTORS = VECTORS2

I made that change when I added phatk 2.2 to Phoenix in order to be consistent with previous versions.
legendary
Activity: 1512
Merit: 1032
August 21, 2011, 10:57:33 AM
Hey, I don't usually thread bump, but my question went completely overlooked.
I was wondering if someone could explain to me the difference between VECTORS and VECTORS2 from the Phatk2 kernel?  From my understanding of past readings, they were originally supposed to be the same.  But I'm finding that VECTORS works faster than VECTORS2 and, obviously, VECTORS4 with my HD5450.

The VECTORS command line = VECTORS2 processing, two hashes processed per iteration.
There is no parsing of a "VECTORS2" command line, if you are typing that, then both vectors options are disabled.

    VECTORS = KernelOption(
        'VECTORS', bool, default=False, advanced=True,
        help='Enable vector support in the kernel?')
    VECTORS4 = KernelOption(
        'VECTORS4', bool, default=False, advanced=True,
        help='Enable vector uint4 support in the kernel?')
sr. member
Activity: 378
Merit: 250
August 21, 2011, 03:14:49 AM
Hey, I don't usually thread bump, but my question went completely overlooked.
I was wondering if someone could explain to me the difference between VECTORS and VECTORS2 from the Phatk2 kernel?  From my understanding of past readings, they were originally supposed to be the same.  But I'm finding that VECTORS works faster than VECTORS2 and, obviously, VECTORS4 with my HD5450.
full member
Activity: 219
Merit: 120
August 20, 2011, 01:30:33 AM
Does 1.6.2 use these mods?

further improved phatk OpenCL Kernel (> 4% increase) for Phoenix - 2011-08-11
https://bitcointalksearch.org/topic/further-improved-phatkdia-kernel-for-phoenix-sdk-26-2012-01-13-25860

I started using 1.6.2 over 1.5 and haven't seen any increase.

Phoenix uses Diapolo's latest kernel (the one from the thread you linked above) for phatk. The phatk2 kernel is based on Phateus's phatk 2.2 from the original phatk thread. I modified the python portion of his kernel a bit though.
So shouldn't we see improvement in mh/s over 1.5 vs 1.6.2?

It depends on the hardware you are running, but 1.6.2 should be faster than 1.5 assuming you use the included kernels. However, since the kernels are modular you can use the kernels from 1.6.2 with 1.5 and get the same performance.
sr. member
Activity: 434
Merit: 250
August 19, 2011, 10:35:23 PM
Does 1.6.2 use these mods?

further improved phatk OpenCL Kernel (> 4% increase) for Phoenix - 2011-08-11
https://bitcointalksearch.org/topic/further-improved-phatkdia-kernel-for-phoenix-sdk-26-2012-01-13-25860

I started using 1.6.2 over 1.5 and haven't seen any increase.

Phoenix uses Diapolo's latest kernel (the one from the thread you linked above) for phatk. The phatk2 kernel is based on Phateus's phatk 2.2 from the original phatk thread. I modified the python portion of his kernel a bit though.
So shouldn't we see improvement in mh/s over 1.5 vs 1.6.2?
full member
Activity: 140
Merit: 100
August 19, 2011, 04:32:39 PM
Ok, well i do seem to have a problem with phoenix. The askrate is broken. I changed the askrate to a higher or lower, however phoenix always requests work every 11 seconds, not 10, 11. I even modified the code, and it still asks work every 11 seconds. What gives??

11 seconds is about what I would expect.

Number of nonces 2^32 = 4294967296
Assuming 400MH/s hash rate

2^32 / 400 = 10.7 seconds

Ain't math grand?
sr. member
Activity: 378
Merit: 250
August 19, 2011, 04:20:50 PM
Ok, well i do seem to have a problem with phoenix. The askrate is broken. I changed the askrate to a higher or lower, however phoenix always requests work every 11 seconds, not 10, 11. I even modified the code, and it still asks work every 11 seconds. What gives??
It really likes the number 11?  Well, the easiest way to track it down is to figure out what the ask rate counter variable is called and then track it down.  Somewhere, it's deciding to add the constant of 11 into memory and ignoring stdin.  I would check what the input is since that will most likely be the point of origin of the problem.
And please delete your bump; I was responding as you bumped it.
I've directly replaced the variable with a number in

Code:
   def _startCall(self):
        self._stopCall()
        if self.root.disconnected:
            return
        if self.askInterval:
            self.askCall = reactor.callLater(20, self.ask)
        else:
            self.askCall = None
and it still asks for work every 11 seconds. I've replaced all the askrate variables with a number whatever it is, but it always asks every 11 seconds.

In fact here is a screenshot to back my claims



Here and there, there might be an ask in 10 seconds, but it's mostly 11 and rarely 12-13 but never what it's set at

This is the intended behavior, not a bug. Phoenix will request work whenever the queue size falls below the value specified with -q (default is 1) With a 5870 this will occur roughly once every 11 seconds. If you set an askrate higher than the time it takes your GPU to test all the nonces in the 2^32 space then Phoenix will end up requesting work more often than the specified askrate to avoid running out of work and idling.

The entire point of an askrate is to find out about new blocks quickly on servers without long polling. On servers with long polling, the askrate is automatically ignored because it would be pointless anyway.
So, in this case, would using -q 2 cause it to request every 22 seconds or try to keep its work load full and still request every 11?  And I would recommend setting it to at least -q 2 in case a small network hiccup occurs which would take about 11 seconds to work through.
full member
Activity: 219
Merit: 120
August 19, 2011, 12:27:28 PM
Ok, well i do seem to have a problem with phoenix. The askrate is broken. I changed the askrate to a higher or lower, however phoenix always requests work every 11 seconds, not 10, 11. I even modified the code, and it still asks work every 11 seconds. What gives??
It really likes the number 11?  Well, the easiest way to track it down is to figure out what the ask rate counter variable is called and then track it down.  Somewhere, it's deciding to add the constant of 11 into memory and ignoring stdin.  I would check what the input is since that will most likely be the point of origin of the problem.
And please delete your bump; I was responding as you bumped it.
I've directly replaced the variable with a number in

Code:
   def _startCall(self):
        self._stopCall()
        if self.root.disconnected:
            return
        if self.askInterval:
            self.askCall = reactor.callLater(20, self.ask)
        else:
            self.askCall = None
and it still asks for work every 11 seconds. I've replaced all the askrate variables with a number whatever it is, but it always asks every 11 seconds.

In fact here is a screenshot to back my claims



Here and there, there might be an ask in 10 seconds, but it's mostly 11 and rarely 12-13 but never what it's set at

This is the intended behavior, not a bug. Phoenix will request work whenever the queue size falls below the value specified with -q (default is 1) With a 5870 this will occur roughly once every 11 seconds. If you set an askrate higher than the time it takes your GPU to test all the nonces in the 2^32 space then Phoenix will end up requesting work more often than the specified askrate to avoid running out of work and idling.

The entire point of an askrate is to find out about new blocks quickly on servers without long polling. On servers with long polling, the askrate is automatically ignored because it would be pointless anyway.
newbie
Activity: 52
Merit: 0
August 19, 2011, 11:52:37 AM
Hi, how can I print the output of the miner into a file? I do
Code:
for (( j=0; j<$num; j++ )); do
    ./phoenix.py -u http://xyz_$j:[email protected]:3000/  -k poclbm DEVICE=$j VECTORS BFI_INT FASTLOOP=false AGGRESSION=13 > /home/user/miner_log_$j.txt &
    sleep 10
done
so it runs in the background and prints the output into the log_files. But I get a lot of additional unreadable characters in each line looking like this:
Code:
[424.39 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [424.90 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.21 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.38 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.21 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.29 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [424.98 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [424.83 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [19/08/2011 14:07:43] Result: 06c4d93e accepted
All I want to see in the logfile is the time, the speed, the accepted/rejected number and the result. How can I do that?

see my script:

Code:
while i=1
do
date
echo GPU1:`tail -1 ~/phoenix/gpu1.out | awk '{print $1 $2 $3 $4 $5 $6}'` Load:`aticonfig --adapter=0 --od-getclock | grep GPU | cut -d ":" -f2` Temp:`aticonfig --adapter=0 --od-gettemp | grep Temperature | cut -d "-" -f2`
echo GPU2:`tail -1 ~/phoenix/gpu2.out | awk '{print $1 $2 $3 $4 $5 $6}'` Load:`aticonfig --adapter=1 --od-getclock | grep GPU | cut -d ":" -f2` Temp:`aticonfig --adapter=1 --od-gettemp | grep Temperature | cut -d "-" -f2`
echo GPU3:`tail -1 ~/phoenix/gpu3.out | awk '{print $1 $2 $3 $4 $5 $6}'` Load:`aticonfig --adapter=2 --od-getclock | grep GPU | cut -d ":" -f2` Temp:`aticonfig --adapter=2 --od-gettemp | grep Temperature | cut -d "-" -f2`
sleep 30
done

you run this code with

Code:
nohup yourscript.sh > gpuall.out &

i run phoenix with:
Code:
python phoenix.py -u http://[...] -b http://[...] -k phatk2 VECTORS BFI_INT AGGRESSION=11 FASTLOOP=false WORKSIZE=256 DEVICE=0 | tee gpu1.out
etc....
for each miner with different Device and output-numbers...

after you have start the Miners and the script you can follow the output with "tail -f gpuall.out" and see like this:


Code:
:~$ tail -f gpuall.out
GPU2:[374.89Mhash/sec][106Accepted][2Rejected] Load: 99% Temp: 68.50 C
GPU3:[395.66Mhash/sec][121Accepted][0Rejected] Load: 99% Temp: 65.50 C
Fr 19. Aug 17:50:04 CEST 2011
GPU1:[374.58Mhash/sec][105Accepted][4Rejected] Load: 99% Temp: 68.00 C
GPU2:[375.18Mhash/sec][107Accepted][2Rejected] Load: 99% Temp: 68.50 C
GPU3:[417.03Mhash/sec][125Accepted][0Rejected] Load: 99% Temp: 66.00 C
Fr 19. Aug 17:50:34 CEST 2011
GPU1:[374.70Mhash/sec][108Accepted][4Rejected] Load: 99% Temp: 68.00 C
GPU2:[375.26Mhash/sec][110Accepted][2Rejected] Load: 99% Temp: 68.50 C
GPU3:[396.77Mhash/sec][130Accepted][0Rejected] Load: 97% Temp: 65.50 C
Fr 19. Aug 17:51:04 CEST 2011
GPU1:[375.87Mhash/sec][113Accepted][4Rejected] Load: 99% Temp: 67.50 C
GPU2:[372.67Mhash/sec][112Accepted][2Rejected] Load: 99% Temp: 68.50 C
GPU3:[416.69Mhash/sec][135Accepted][0Rejected] Load: 98% Temp: 66.50 C
[...]
member
Activity: 65
Merit: 10
August 19, 2011, 08:17:37 AM
Hi, how can I print the output of the miner into a file? I do
Code:
for (( j=0; j<$num; j++ )); do
    ./phoenix.py -u http://xyz_$j:[email protected]:3000/  -k poclbm DEVICE=$j VECTORS BFI_INT FASTLOOP=false AGGRESSION=13 > /home/user/miner_log_$j.txt &
    sleep 10
done
so it runs in the background and prints the output into the log_files. But I get a lot of additional unreadable characters in each line looking like this:
Code:
[424.39 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [424.90 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.21 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.38 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.21 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [425.29 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [424.98 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [424.83 Mhash/sec] [56 Accepted] [1 Rejected] [RPC (+LP)]                                                                                                                                                                           [19/08/2011 14:07:43] Result: 06c4d93e accepted
All I want to see in the logfile is the time, the speed, the accepted/rejected number and the result. How can I do that?
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
August 19, 2011, 07:44:28 AM
Nope, no matter what i set, what i remove, it is always 11 seconds. Something is very wrong. And i think the problem is in this "reactor"..
sr. member
Activity: 378
Merit: 250
August 19, 2011, 07:33:10 AM
Thinking back...I think I recall noticing that same thing the other day on a similar problem when someone was having a pool stop responding.  I noticed it was every 11 seconds but didn't think anything of it at the time.  Have you tried making it a constant instead of an if-then statement to check if the variable is even being used by the program?  As in "To hell with else, do it!"
And your bumps are unnecessary.  We help if we can and don't if we can't.  But most of us read each and every post that comes through regardless of if it falls on the previous page or not.
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
August 19, 2011, 07:32:54 AM
Just a small bump in case someone misses the image above(even though it's huge)
sr. member
Activity: 378
Merit: 250
August 19, 2011, 07:29:04 AM
some settings for the backup pool would be nice, and the option to jump back to the primary pool after xxx shares.
I would imagine that it jumps back after a given period of time instead of shares.  Switching back after a given number of shares is unreliable as it could be a second, a minute or an hour from when the pool stopped responding.  I'm not familiar with Phoenix's backup pool strategy, but a given number of seconds before checking on its activity again would be a good idea...as would checking for a list of alternative pool servers under the same pool in case one fails...but I digress.
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
August 19, 2011, 07:26:39 AM
Ok, well i do seem to have a problem with phoenix. The askrate is broken. I changed the askrate to a higher or lower, however phoenix always requests work every 11 seconds, not 10, 11. I even modified the code, and it still asks work every 11 seconds. What gives??
It really likes the number 11?  Well, the easiest way to track it down is to figure out what the ask rate counter variable is called and then track it down.  Somewhere, it's deciding to add the constant of 11 into memory and ignoring stdin.  I would check what the input is since that will most likely be the point of origin of the problem.
And please delete your bump; I was responding as you bumped it.
I've directly replaced the variable with a number in

Code:
   def _startCall(self):
        self._stopCall()
        if self.root.disconnected:
            return
        if self.askInterval:
            self.askCall = reactor.callLater(20, self.ask)
        else:
            self.askCall = None
and it still asks for work every 11 seconds. I've replaced all the askrate variables with a number whatever it is, but it always asks every 11 seconds.

In fact here is a screenshot to back my claims



Here and there, there might be an ask in 10 seconds, but it's mostly 11 and rarely 12-13 but never what it's set at
sr. member
Activity: 378
Merit: 250
August 19, 2011, 07:24:09 AM
Ok, well i do seem to have a problem with phoenix. The askrate is broken. I changed the askrate to a higher or lower, however phoenix always requests work every 11 seconds, not 10, 11. I even modified the code, and it still asks work every 11 seconds. What gives??
It really likes the number 11?  Well, the easiest way to track it down is to figure out what the ask rate counter variable is called and then track it down.  Somewhere, it's deciding to add the constant of 11 into memory and ignoring stdin.  I would check what the input is since that will most likely be the point of origin of the problem.
And please delete your bump; I was responding as you bumped it.
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
August 19, 2011, 07:22:16 AM
Ok, well i do seem to have a problem with phoenix. The askrate is broken. I changed the askrate to a higher or lower, however phoenix always requests work every 11 seconds, not 10, 11. I even modified the code, and it still asks work every 11 seconds. What gives??
Oh, new page,  i am bumping my problem here cause it will get lost.
full member
Activity: 133
Merit: 100
August 19, 2011, 07:21:36 AM
some settings for the backup pool would be nice, and the option to jump back to the primary pool after xxx shares.
Pages:
Jump to: