Bitcoin Forum
November 15, 2024, 12:11:30 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 [530] 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 ... 862 »
  Print  
Author Topic: [ANN] ¤ DMD Diamond 3.0 | Scarce ¤ Valuable ¤ Secure | PoS 3.0 | Masternodes 65%  (Read 1260665 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
utahjohn
Hero Member
*****
Offline Offline

Activity: 630
Merit: 500


View Profile
March 29, 2016, 06:31:35 AM
Last edit: March 29, 2016, 02:21:00 PM by utahjohn
 #10581

@devs
I found a cpp source for scrypt_core()

I put it in scrypt_mine.cpp
Code:
#if defined(__aarch64__)
static inline void xor_salsa8(uint32_t B[16], const uint32_t Bx[16])
{
uint32_t x00,x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15;
int i;

x00 = (B[ 0] ^= Bx[ 0]);
x01 = (B[ 1] ^= Bx[ 1]);
x02 = (B[ 2] ^= Bx[ 2]);
x03 = (B[ 3] ^= Bx[ 3]);
x04 = (B[ 4] ^= Bx[ 4]);
x05 = (B[ 5] ^= Bx[ 5]);
x06 = (B[ 6] ^= Bx[ 6]);
x07 = (B[ 7] ^= Bx[ 7]);
x08 = (B[ 8] ^= Bx[ 8]);
x09 = (B[ 9] ^= Bx[ 9]);
x10 = (B[10] ^= Bx[10]);
x11 = (B[11] ^= Bx[11]);
x12 = (B[12] ^= Bx[12]);
x13 = (B[13] ^= Bx[13]);
x14 = (B[14] ^= Bx[14]);
x15 = (B[15] ^= Bx[15]);
for (i = 0; i < 8; i += 2) {
#define R(a, b) (((a) << (b)) | ((a) >> (32 - (b))))
/* Operate on columns. */
x04 ^= R(x00+x12, 7); x09 ^= R(x05+x01, 7);
x14 ^= R(x10+x06, 7); x03 ^= R(x15+x11, 7);

x08 ^= R(x04+x00, 9); x13 ^= R(x09+x05, 9);
x02 ^= R(x14+x10, 9); x07 ^= R(x03+x15, 9);

x12 ^= R(x08+x04,13); x01 ^= R(x13+x09,13);
x06 ^= R(x02+x14,13); x11 ^= R(x07+x03,13);

x00 ^= R(x12+x08,18); x05 ^= R(x01+x13,18);
x10 ^= R(x06+x02,18); x15 ^= R(x11+x07,18);

/* Operate on rows. */
x01 ^= R(x00+x03, 7); x06 ^= R(x05+x04, 7);
x11 ^= R(x10+x09, 7); x12 ^= R(x15+x14, 7);

x02 ^= R(x01+x00, 9); x07 ^= R(x06+x05, 9);
x08 ^= R(x11+x10, 9); x13 ^= R(x12+x15, 9);

x03 ^= R(x02+x01,13); x04 ^= R(x07+x06,13);
x09 ^= R(x08+x11,13); x14 ^= R(x13+x12,13);

x00 ^= R(x03+x02,18); x05 ^= R(x04+x07,18);
x10 ^= R(x09+x08,18); x15 ^= R(x14+x13,18);
#undef R
}
B[ 0] += x00;
B[ 1] += x01;
B[ 2] += x02;
B[ 3] += x03;
B[ 4] += x04;
B[ 5] += x05;
B[ 6] += x06;
B[ 7] += x07;
B[ 8] += x08;
B[ 9] += x09;
B[10] += x10;
B[11] += x11;
B[12] += x12;
B[13] += x13;
B[14] += x14;
B[15] += x15;
}

static inline void scrypt_core(uint32_t *X, uint32_t *V)
{
uint32_t i, j, k;
int n=1024;

for (i = 0; i < n; i++) {
memcpy(&V[i * 32], X, 128);
xor_salsa8(&X[0], &X[16]);
xor_salsa8(&X[16], &X[0]);
}
for (i = 0; i < n; i++) {
j = 32 * (X[16] & (n - 1));
for (k = 0; k < 32; k++)
X[k] ^= V[j + k];
xor_salsa8(&X[0], &X[16]);
xor_salsa8(&X[16], &X[0]);
}
}
#endif
Code compiles ... and syncing Smiley using ~ 190% cpu on a quad core 64 bit.

Synced up Smiley cpu use dropped to about 30% is that about normal on a linux build?

compiling with -O3 and see if that makes a difference ...
Quote
top - 05:46:50 up  4:30,  3 users,  load average: 0.27, 0.36, 0.65
Tasks: 157 total,   2 running, 155 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.6 sy,  7.0 ni, 92.2 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   1760360 total,   932260 used,   828100 free,     4112 buffers
KiB Swap:  2047996 total,   128036 used,  1919960 free.   112292 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND              
 2362 odroid    20   0 1443020 627508   9444 S  29.9 35.6  56:20.24 diamond-qt-O3        
Swap barely got touched with all the compiling I've been doing ... probably never touch it after a reboot.

Disk usage
Quote
odroid@odroid64:~$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/mmcblk0p2  29940700 3873036  26049272  13% /
udev               10240       0     10240   0% /dev
tmpfs             352072   11624    340448   4% /run
tmpfs             880180      80    880100   1% /dev/shm
tmpfs               5120       4      5116   1% /run/lock
tmpfs             880180       0    880180   0% /sys/fs/cgroup
/dev/mmcblk0p1    130796   16394    114402  13% /media/boot
/dev/mmcblk1p2  28528640 2856728  24199656  11% /home
tmpfs             176036       4    176032   1% /run/user/115
tmpfs             176036      16    176020   1% /run/user/1000
tmpfs             176036       0    176036   0% /run/user/0




Ayers
Legendary
*
Offline Offline

Activity: 2814
Merit: 1024


DGbet.fun - Crypto Sportsbook


View Profile
March 29, 2016, 06:41:31 AM
 #10582

can i ask how much a 970 can do with this algo? is it profitable?

BogdanCo
Hero Member
*****
Offline Offline

Activity: 729
Merit: 513


View Profile
March 29, 2016, 07:40:14 AM
 #10583

can i ask how much a 970 can do with this algo? is it profitable?

You want to mine -groestl algo with a Geforce 970? It's not profitable...
But you can use the miner from nicehash, mine a more profitable algo suited for your card and get payouts in DMD thru multipool...
BogdanCo
Hero Member
*****
Offline Offline

Activity: 729
Merit: 513


View Profile
March 29, 2016, 07:45:09 AM
 #10584

Here is a short guide:


Quote
there is people asking us how dmd cloudmining can generate payouts
even if nearly all but the newest generation of mining gear is running unprofitable this days

the answer is easy DMD Cloudmining dynamic place and shift value between different kind of payout generating crypto investments
and that not only cloudmining hashrate its also staking coins and crypto lending and similar investment

and addtional we have the regulary DMD reaktor payout that give sweet bonus payouts to DMD cloudmining shareholders

--------------------------------

DMD MULTIPOOL / DMD CLOUDMINING
Visit us:  cloudmining.bit.diamonds

redistributed over 217000 DMD! between its users!
yes thats close to 15% of total coins!



---------------------


---------------------------------------------------------
ROI Boost enabled now:
All accounts who didnt reach ROI 100%
will be boosted with x5 sharepower!
--------------------------------------------------------

(https://cloudmining.bit.diamonds/ log in with DMD Address and activate settings area to enable buy shares mode)


NO Electricity Bills                                
  NO Maintenance                                    
    NO Heat                                                
      NO Noise                                              
        NO Timesink                                        
          NO Complicated technology                
            NO Quickly decreasing mining rewards


Join DMD Cloudmining
     -> EARN DMD EACH DAY!
                    
                   YES!

(additional DMD Cloudmining shares qualify for DMD Reactor  payouts!

Visit us:  cloudmining.bit.diamonds
terms & conditions Terms of Service
for questions Email us:
cloud@bit.diamonds


      


What's the best way join into DMD Diamond and DMD Cloudmining?

I suggest split it as follows:

 a) 50% on buying Diamonds directly
 b) 50% in Diamond Cloud Mining.

 This way I could achieve both maximizing the profit and stabilizing the coin.
 Diamond Cloud Mining can earn Diamonds every day, those Diamonds stake with 50% PoS interest.
 Some would call that Double PoS or simply PoS² (Proof of Shares and Proof of Stake).



Step by Step guide how to buy shares is at FAQ section on https://cloudmining.bit.diamonds/



I am not a Registered Investment Advisor, Broker/Dealer, Financial Analyst, Financial Bank, Securities Broker or Financial Planner. The Information is provided for information purposes only. The Information is not intended to be and does not constitute financial advice or any other advice, is general in nature and not specific to you. Before using this information to make an investment decision, you should seek the advice of a qualified and registered securities professional and undertake your own due diligence. None of the information is intended as investment advice, as an offer or solicitation of an offer to buy or sell, or as a recommendation, endorsement, or sponsorship of any security, Company, or fund. DMD Diamond is not a regulated investment vehicle. DMD Diamond, like all crypto currencies, is experimental in nature and should be considered and treated with appropriate caution. There is no central point of control or representative entity, DMD Diamond is a distributed decentralized peer-to-peer currency and commodity. Consult a licensed professional financial advisor before making any investment decisions. I am not responsible for any investment decision made by you. You are responsible for your own investment research and investment decisions.

--------------
--------------

Just in case someone missed this now DMD Multipool mining become easy for everyone!
Working on Nvidia AND AMD based cards!

here come the new nicehash miner tool
https://github.com/nicehash/NiceHashMiner/releases

just use ur https://multipool.bit.diamonds/
BTC address attached to ur registered DMD address
as mining address in nicehashminer and u will earn DMD payouts
provided by our fee free convertion service




Ayers
Legendary
*
Offline Offline

Activity: 2814
Merit: 1024


DGbet.fun - Crypto Sportsbook


View Profile
March 29, 2016, 08:01:03 AM
 #10585

can i ask how much a 970 can do with this algo? is it profitable?

You want to mine -groestl algo with a Geforce 970? It's not profitable...
But you can use the miner from nicehash, mine a more profitable algo suited for your card and get payouts in DMD thru multipool...

i've tried and it's actually profitable, not on par with etheruem, but there is profit, you can earn at present, 0.005 with a single 970, each day

cryptonit
Legendary
*
Offline Offline

Activity: 3052
Merit: 1053


bit.diamonds | uNiq.diamonds


View Profile WWW
March 29, 2016, 01:40:31 PM
 #10586

nicehash did merge together mining stats from nicehash and westhash so now https://multipool.bit.diamonds/ show merged stats now too

still missing is that we add visible stats for other algos on our website we will do that in one of next updates

for the DMD payout that doesnt matter because the DMD u recieve just deepend on the arriving BTC so if we track stats or not doesnt matter

its more a cosmetically issue to have stats visible that represent the true miningpower of our userbase

 
  Diamond [DMD]     uNiq.Diamonds  
Scarce✦✦✦✦ Valuable ✦✦✦✦ Secure ✦                     ▬ a collector experience ▬                
cryptonit
Legendary
*
Offline Offline

Activity: 3052
Merit: 1053


bit.diamonds | uNiq.diamonds


View Profile WWW
March 29, 2016, 09:30:15 PM
Last edit: March 29, 2016, 10:25:44 PM by cryptonit
 #10587

great stuff is happening in background

while we still working to get wallet 2.1 released

we already have setup a plan for DMD 3.0 wallet and it will be mind-blowing trust me




that will be the moment everyone know again why we carry "evolution" in our thread title!





 
  Diamond [DMD]     uNiq.Diamonds  
Scarce✦✦✦✦ Valuable ✦✦✦✦ Secure ✦                     ▬ a collector experience ▬                
cryptonit
Legendary
*
Offline Offline

Activity: 3052
Merit: 1053


bit.diamonds | uNiq.diamonds


View Profile WWW
March 29, 2016, 11:08:49 PM
 #10588

i just want to inform u that groestlcoin DMD Diamond merged mining is removed from DMD 2.1 wallet content

this happens because the roadmap to DMD 3.0 move in a direction that make this obsolete

 
  Diamond [DMD]     uNiq.Diamonds  
Scarce✦✦✦✦ Valuable ✦✦✦✦ Secure ✦                     ▬ a collector experience ▬                
utahjohn
Hero Member
*****
Offline Offline

Activity: 630
Merit: 500


View Profile
March 30, 2016, 05:20:46 AM
Last edit: March 30, 2016, 06:14:41 AM by utahjohn
 #10589

Can anyone can translate to NEON instructions in C?
https://community.arm.com/groups/android-community/blog/2015/03/27/arm-neon-programming-quick-reference
I put it in scrypt_mine.cpp to run DMD wallet, it is far from optimized and ARMv8 supports NEON.
Code:
#if defined(__aarch64__)
static inline void xor_salsa8(uint32_t B[16], const uint32_t Bx[16])
{
uint32_t x00,x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15;
int i;

x00 = (B[ 0] ^= Bx[ 0]);
x01 = (B[ 1] ^= Bx[ 1]);
x02 = (B[ 2] ^= Bx[ 2]);
x03 = (B[ 3] ^= Bx[ 3]);
x04 = (B[ 4] ^= Bx[ 4]);
x05 = (B[ 5] ^= Bx[ 5]);
x06 = (B[ 6] ^= Bx[ 6]);
x07 = (B[ 7] ^= Bx[ 7]);
x08 = (B[ 8] ^= Bx[ 8]);
x09 = (B[ 9] ^= Bx[ 9]);
x10 = (B[10] ^= Bx[10]);
x11 = (B[11] ^= Bx[11]);
x12 = (B[12] ^= Bx[12]);
x13 = (B[13] ^= Bx[13]);
x14 = (B[14] ^= Bx[14]);
x15 = (B[15] ^= Bx[15]);
for (i = 0; i < 8; i += 2) {
#define R(a, b) (((a) << (b)) | ((a) >> (32 - (b))))
/* Operate on columns. */
x04 ^= R(x00+x12, 7); x09 ^= R(x05+x01, 7);
x14 ^= R(x10+x06, 7); x03 ^= R(x15+x11, 7);

x08 ^= R(x04+x00, 9); x13 ^= R(x09+x05, 9);
x02 ^= R(x14+x10, 9); x07 ^= R(x03+x15, 9);

x12 ^= R(x08+x04,13); x01 ^= R(x13+x09,13);
x06 ^= R(x02+x14,13); x11 ^= R(x07+x03,13);

x00 ^= R(x12+x08,18); x05 ^= R(x01+x13,18);
x10 ^= R(x06+x02,18); x15 ^= R(x11+x07,18);

/* Operate on rows. */
x01 ^= R(x00+x03, 7); x06 ^= R(x05+x04, 7);
x11 ^= R(x10+x09, 7); x12 ^= R(x15+x14, 7);

x02 ^= R(x01+x00, 9); x07 ^= R(x06+x05, 9);
x08 ^= R(x11+x10, 9); x13 ^= R(x12+x15, 9);

x03 ^= R(x02+x01,13); x04 ^= R(x07+x06,13);
x09 ^= R(x08+x11,13); x14 ^= R(x13+x12,13);

x00 ^= R(x03+x02,18); x05 ^= R(x04+x07,18);
x10 ^= R(x09+x08,18); x15 ^= R(x14+x13,18);
#undef R
}
B[ 0] += x00;
B[ 1] += x01;
B[ 2] += x02;
B[ 3] += x03;
B[ 4] += x04;
B[ 5] += x05;
B[ 6] += x06;
B[ 7] += x07;
B[ 8] += x08;
B[ 9] += x09;
B[10] += x10;
B[11] += x11;
B[12] += x12;
B[13] += x13;
B[14] += x14;
B[15] += x15;
}

static inline void scrypt_core(uint32_t *X, uint32_t *V)
{
uint32_t i, j, k;
int n=1024;

for (i = 0; i < n; i++) {
memcpy(&V[i * 32], X, 128);
xor_salsa8(&X[0], &X[16]);
xor_salsa8(&X[16], &X[0]);
}
for (i = 0; i < n; i++) {
j = 32 * (X[16] & (n - 1));
for (k = 0; k < 32; k++)
X[k] ^= V[j + k];
xor_salsa8(&X[0], &X[16]);
xor_salsa8(&X[16], &X[0]);
}
}
#endif
cryptonit
Legendary
*
Offline Offline

Activity: 3052
Merit: 1053


bit.diamonds | uNiq.diamonds


View Profile WWW
March 30, 2016, 02:18:28 PM
Last edit: March 30, 2016, 05:52:59 PM by cryptonit
 #10590

as pump defence place some sellorders between 0.00090 and 0.00125
else we might see a price spike.......

our liquidity suffer if not enough DMD available to be bought


YES thats DMD
here we try to avoid pumps

not many coins even aware that

liquidity not only means coins can be sold without big drop price

liquidity also means coins can be bought without raise the price to much


 
  Diamond [DMD]     uNiq.Diamonds  
Scarce✦✦✦✦ Valuable ✦✦✦✦ Secure ✦                     ▬ a collector experience ▬                
cryptonit
Legendary
*
Offline Offline

Activity: 3052
Merit: 1053


bit.diamonds | uNiq.diamonds


View Profile WWW
March 30, 2016, 07:48:52 PM
 #10591


 
  Diamond [DMD]     uNiq.Diamonds  
Scarce✦✦✦✦ Valuable ✦✦✦✦ Secure ✦                     ▬ a collector experience ▬                
cryptonit
Legendary
*
Offline Offline

Activity: 3052
Merit: 1053


bit.diamonds | uNiq.diamonds


View Profile WWW
March 30, 2016, 07:50:43 PM
 #10592


 
  Diamond [DMD]     uNiq.Diamonds  
Scarce✦✦✦✦ Valuable ✦✦✦✦ Secure ✦                     ▬ a collector experience ▬                
cryptonit
Legendary
*
Offline Offline

Activity: 3052
Merit: 1053


bit.diamonds | uNiq.diamonds


View Profile WWW
March 30, 2016, 07:57:22 PM
 #10593



my strongest node have 171 connections so at least that many wallets are simultaneous online

i expect it to be more and not all are connected to this node
some people run wallet with limit to just 16 connections
so there will be many more nodes that didnt connect to me

its save to estimate our network to be above 200 24/7 nodes

only a handfull coins below the top 10 have a similar strong network

 
  Diamond [DMD]     uNiq.Diamonds  
Scarce✦✦✦✦ Valuable ✦✦✦✦ Secure ✦                     ▬ a collector experience ▬                
cryptonit
Legendary
*
Offline Offline

Activity: 3052
Merit: 1053


bit.diamonds | uNiq.diamonds


View Profile WWW
March 30, 2016, 08:02:00 PM
 #10594

the amount of coins in hands above the top 100 addresses is constant growing
which means we get more and more spread and community grows

(few months it was 18% and now its over 26% expected to be soon 1/3 of coins in small investor hands)


 
  Diamond [DMD]     uNiq.Diamonds  
Scarce✦✦✦✦ Valuable ✦✦✦✦ Secure ✦                     ▬ a collector experience ▬                
davembg
Sr. Member
****
Offline Offline

Activity: 340
Merit: 251


Smell the glove.


View Profile
March 30, 2016, 08:23:52 PM
 #10595

Can anyone can translate to NEON instructions in C?
https://community.arm.com/groups/android-community/blog/2015/03/27/arm-neon-programming-quick-reference
I put it in scrypt_mine.cpp to run DMD wallet, it is far from optimized and ARMv8 supports NEON.
Code:
#if defined(__aarch64__)
static inline void xor_salsa8(uint32_t B[16], const uint32_t Bx[16])
{
uint32_t x00,x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15;
int i;

x00 = (B[ 0] ^= Bx[ 0]);
x01 = (B[ 1] ^= Bx[ 1]);
x02 = (B[ 2] ^= Bx[ 2]);
x03 = (B[ 3] ^= Bx[ 3]);
x04 = (B[ 4] ^= Bx[ 4]);
x05 = (B[ 5] ^= Bx[ 5]);
x06 = (B[ 6] ^= Bx[ 6]);
x07 = (B[ 7] ^= Bx[ 7]);
x08 = (B[ 8] ^= Bx[ 8]);
x09 = (B[ 9] ^= Bx[ 9]);
x10 = (B[10] ^= Bx[10]);
x11 = (B[11] ^= Bx[11]);
x12 = (B[12] ^= Bx[12]);
x13 = (B[13] ^= Bx[13]);
x14 = (B[14] ^= Bx[14]);
x15 = (B[15] ^= Bx[15]);
for (i = 0; i < 8; i += 2) {
#define R(a, b) (((a) << (b)) | ((a) >> (32 - (b))))
/* Operate on columns. */
x04 ^= R(x00+x12, 7); x09 ^= R(x05+x01, 7);
x14 ^= R(x10+x06, 7); x03 ^= R(x15+x11, 7);

x08 ^= R(x04+x00, 9); x13 ^= R(x09+x05, 9);
x02 ^= R(x14+x10, 9); x07 ^= R(x03+x15, 9);

x12 ^= R(x08+x04,13); x01 ^= R(x13+x09,13);
x06 ^= R(x02+x14,13); x11 ^= R(x07+x03,13);

x00 ^= R(x12+x08,18); x05 ^= R(x01+x13,18);
x10 ^= R(x06+x02,18); x15 ^= R(x11+x07,18);

/* Operate on rows. */
x01 ^= R(x00+x03, 7); x06 ^= R(x05+x04, 7);
x11 ^= R(x10+x09, 7); x12 ^= R(x15+x14, 7);

x02 ^= R(x01+x00, 9); x07 ^= R(x06+x05, 9);
x08 ^= R(x11+x10, 9); x13 ^= R(x12+x15, 9);

x03 ^= R(x02+x01,13); x04 ^= R(x07+x06,13);
x09 ^= R(x08+x11,13); x14 ^= R(x13+x12,13);

x00 ^= R(x03+x02,18); x05 ^= R(x04+x07,18);
x10 ^= R(x09+x08,18); x15 ^= R(x14+x13,18);
#undef R
}
B[ 0] += x00;
B[ 1] += x01;
B[ 2] += x02;
B[ 3] += x03;
B[ 4] += x04;
B[ 5] += x05;
B[ 6] += x06;
B[ 7] += x07;
B[ 8] += x08;
B[ 9] += x09;
B[10] += x10;
B[11] += x11;
B[12] += x12;
B[13] += x13;
B[14] += x14;
B[15] += x15;
}

static inline void scrypt_core(uint32_t *X, uint32_t *V)
{
uint32_t i, j, k;
int n=1024;

for (i = 0; i < n; i++) {
memcpy(&V[i * 32], X, 128);
xor_salsa8(&X[0], &X[16]);
xor_salsa8(&X[16], &X[0]);
}
for (i = 0; i < n; i++) {
j = 32 * (X[16] & (n - 1));
for (k = 0; k < 32; k++)
X[k] ^= V[j + k];
xor_salsa8(&X[0], &X[16]);
xor_salsa8(&X[16], &X[0]);
}
}
#endif


Hey utah - I'd just change your makefile to build that with nasm (if it builds).
Otherwise, a good gcc version *should optimize that code for your ARMv8 chip.

https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
" The value ‘armv8.1-a’ implies ‘armv8-a’ and enables compiler support for the ARMv8.1 architecture extension. In particular, it enables the ‘+crc’ and ‘+lse’ features. "

utahjohn
Hero Member
*****
Offline Offline

Activity: 630
Merit: 500


View Profile
March 30, 2016, 09:20:45 PM
Last edit: March 31, 2016, 04:35:28 AM by utahjohn
 #10596

Can anyone can translate to NEON instructions in C?
https://community.arm.com/groups/android-community/blog/2015/03/27/arm-neon-programming-quick-reference
I put it in scrypt_mine.cpp to run DMD wallet, it is far from optimized and ARMv8 supports NEON.
Code:
#if defined(__aarch64__)
static inline void xor_salsa8(uint32_t B[16], const uint32_t Bx[16])
{
uint32_t x00,x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15;
int i;

x00 = (B[ 0] ^= Bx[ 0]);
x01 = (B[ 1] ^= Bx[ 1]);
x02 = (B[ 2] ^= Bx[ 2]);
x03 = (B[ 3] ^= Bx[ 3]);
x04 = (B[ 4] ^= Bx[ 4]);
x05 = (B[ 5] ^= Bx[ 5]);
x06 = (B[ 6] ^= Bx[ 6]);
x07 = (B[ 7] ^= Bx[ 7]);
x08 = (B[ 8] ^= Bx[ 8]);
x09 = (B[ 9] ^= Bx[ 9]);
x10 = (B[10] ^= Bx[10]);
x11 = (B[11] ^= Bx[11]);
x12 = (B[12] ^= Bx[12]);
x13 = (B[13] ^= Bx[13]);
x14 = (B[14] ^= Bx[14]);
x15 = (B[15] ^= Bx[15]);
for (i = 0; i < 8; i += 2) {
#define R(a, b) (((a) << (b)) | ((a) >> (32 - (b))))
/* Operate on columns. */
x04 ^= R(x00+x12, 7); x09 ^= R(x05+x01, 7);
x14 ^= R(x10+x06, 7); x03 ^= R(x15+x11, 7);

x08 ^= R(x04+x00, 9); x13 ^= R(x09+x05, 9);
x02 ^= R(x14+x10, 9); x07 ^= R(x03+x15, 9);

x12 ^= R(x08+x04,13); x01 ^= R(x13+x09,13);
x06 ^= R(x02+x14,13); x11 ^= R(x07+x03,13);

x00 ^= R(x12+x08,18); x05 ^= R(x01+x13,18);
x10 ^= R(x06+x02,18); x15 ^= R(x11+x07,18);

/* Operate on rows. */
x01 ^= R(x00+x03, 7); x06 ^= R(x05+x04, 7);
x11 ^= R(x10+x09, 7); x12 ^= R(x15+x14, 7);

x02 ^= R(x01+x00, 9); x07 ^= R(x06+x05, 9);
x08 ^= R(x11+x10, 9); x13 ^= R(x12+x15, 9);

x03 ^= R(x02+x01,13); x04 ^= R(x07+x06,13);
x09 ^= R(x08+x11,13); x14 ^= R(x13+x12,13);

x00 ^= R(x03+x02,18); x05 ^= R(x04+x07,18);
x10 ^= R(x09+x08,18); x15 ^= R(x14+x13,18);
#undef R
}
B[ 0] += x00;
B[ 1] += x01;
B[ 2] += x02;
B[ 3] += x03;
B[ 4] += x04;
B[ 5] += x05;
B[ 6] += x06;
B[ 7] += x07;
B[ 8] += x08;
B[ 9] += x09;
B[10] += x10;
B[11] += x11;
B[12] += x12;
B[13] += x13;
B[14] += x14;
B[15] += x15;
}

static inline void scrypt_core(uint32_t *X, uint32_t *V)
{
uint32_t i, j, k;
int n=1024;

for (i = 0; i < n; i++) {
memcpy(&V[i * 32], X, 128);
xor_salsa8(&X[0], &X[16]);
xor_salsa8(&X[16], &X[0]);
}
for (i = 0; i < n; i++) {
j = 32 * (X[16] & (n - 1));
for (k = 0; k < 32; k++)
X[k] ^= V[j + k];
xor_salsa8(&X[0], &X[16]);
xor_salsa8(&X[16], &X[0]);
}
}
#endif


Hey utah - I'd just change your makefile to build that with nasm (if it builds).
Otherwise, a good gcc version *should optimize that code for your ARMv8 chip.

https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
" The value ‘armv8.1-a’ implies ‘armv8-a’ and enables compiler support for the ARMv8.1 architecture extension. In particular, it enables the ‘+crc’ and ‘+lse’ features. "
I'm using gcc 4.9 ...
-march=armv8.1-a does not work. Also -mfpu=neon does not work.  They both error out compiler and it stops.
I am using -Ofast -march=armv8-a+fp+simd+crc -mtune=cortex-a53 -mcpu=cortex-a53 -ftree-vectorize -ffast-math
I looked at some generated code and NO NEON instructions were generated.

The -DNOSSE flag is NOT needed with aarch64 Smiley
CPU usage is down to ~25% now compared to ~30% with -DNOSSE

@devs
A suggestion: have a seperate Makefile for each architecture ... the one in source tree is quite a mess and took days to modify.
I have Makefile.linux.aarch64 it's so much cleaner Smiley
gwinevere
Newbie
*
Offline Offline

Activity: 364
Merit: 0


View Profile WWW
March 31, 2016, 01:39:57 AM
 #10597

This hybrid model is interesting. I will need to read up on DMD.
klarki
Legendary
*
Offline Offline

Activity: 3430
Merit: 4118


Top Crypto Casino


View Profile
March 31, 2016, 01:59:01 AM
 #10598

And when will the new purse and a road map?
Do outs are planned for other exchanges?

███████████████████████
████▐██▄█████████████████
████▐██████▄▄▄███████████
████▐████▄█████▄▄████████
████▐█████▀▀▀▀▀███▄██████
████▐███▀████████████████
████▐█████████▄█████▌████
████▐██▌█████▀██████▌████
████▐██████████▀████▌████
█████▀███▄█████▄███▀█████
███████▀█████████▀███████
██████████▀███▀██████████

███████████████████████
.
BC.GAME
▄▄▀▀▀▀▀▀▀▄▄
▄▀▀░▄██▀░▀██▄░▀▀▄
▄▀░▐▀▄░▀░░▀░░▀░▄▀▌░▀▄
▄▀▄█▐░▀▄▀▀▀▀▀▄▀░▌█▄▀▄
▄▀░▀░░█░▄███████▄░█░░▀░▀▄
█░█░▀░█████████████░▀░█░█
█░██░▀█▀▀█▄▄█▀▀█▀░██░█
█░█▀██░█▀▀██▀▀█░██▀█░█
▀▄▀██░░░▀▀▄▌▐▄▀▀░░░██▀▄▀
▀▄▀██░░▄░▀▄█▄▀░▄░░██▀▄▀
▀▄░▀█░▄▄▄░▀░▄▄▄░█▀░▄▀
▀▄▄▀▀███▄███▀▀▄▄▀
██████▄▄▄▄▄▄▄██████
.
..CASINO....SPORTS....RACING..


▄▄████▄▄
▄███▀▀███▄
██████████
▀███▄░▄██▀
▄▄████▄▄░▀█▀▄██▀▄▄████▄▄
▄███▀▀▀████▄▄██▀▄███▀▀███▄
███████▄▄▀▀████▄▄▀▀███████
▀███▄▄███▀░░░▀▀████▄▄▄███▀
▀▀████▀▀████████▀▀████▀▀
klintay
Legendary
*
Offline Offline

Activity: 1775
Merit: 1032


Value will be measured in sats


View Profile WWW
March 31, 2016, 10:36:35 AM
 #10599

Quote
It looks like you guys in the thread have already figured it out: someone will need to write a scrypt-aarch64.S file for everything to work smoothly.

Alternatively, I could probably have the wallet fall back to a C++ implementation on unsupported architectures. It would just need to be transparent to the users that their architecture does not perform as well as it might with its own assembly implementation. (That is to say that the performance would be really bad compared to a native solution.)

Speaking of performance hits, though, I'm pretty sure one could the ARM version of QEMU to run a 32-bit binary if you just want to run the wallet on an arm64 board. At least until a more robust solution is found. A guide for setting QEMU up on a Raspberry Pi can be found here, but I'm not sure how well that translates to ODROID's boards. You might have to set up ODROID's boards for virtualization (if they support it) and compile QEMU yourself to get things working.
need scrypt-aarch64.S for it to really be a solution ...

scrypt-arm.S is taken from pooler cpuminer (pooler@litcoinpool.com) and he said:
Quote
As documented, there is no Aarch64 implementation in cpuminer.
I do plan to add one in the future, time allowing.

I'm also working with OKtoshi on ROKOS for aarch64 however he does not have a board yet ...
https://bitcointalk.org/index.php?topic=1084908.msg14308714#msg14308714

I'll bet DMD foundation would post a bounty for someone to create src/srcypt-aarch64.S
here is src/srcypt-arm.S as a starting point: https://github.com/DMDcoin/Diamond/blob/master/src/scrypt-arm.S

With the release of RPi 3 out and PINE64+ imminent, there is going to be a large demand for aarch64 support.
I'm lucky to have got the Odroid C2 board, they are sold-out till mid-April.  Specs are quite similar on all Only the Odroid C2 has 2 GHZ though Smiley

I PM'ed pallas too but have not got a reply, he's into stuff like this I think ...

Should PM wolf0 too Smiley

By the way, who is DMD wallet dev nowadays ... used to be danbi but we don't hear from him much at all ...

another review:
http://www.jeffgeerling.com/blog/2016/review-odroid-c2-compared-raspberry-pi-3-and-orange-pi-plus

@feldenthorn
If you can give me example C++ code for maybe I can create aarch64 assembly code from it (I have been looking at several arm 32 bit to aarch64 sites), may not be optimized to the max but just need to get wallet to build for now.  Hell of a way to learn LOL.
I can probably do a side-by-side C++ to assembly code and later tune it with loop un-rolling etc.

u could put C++ fallback code for scrypt_core() in scrypt_mine.cpp, this is where it is used and defined as extern "C".

Raspberry Pi 3 is 64 bit and has been released, you can buy it here now:

https://bitcointalk.org/index.php?topic=1419675
fredeq
Legendary
*
Offline Offline

Activity: 1537
Merit: 1005


View Profile WWW
March 31, 2016, 11:29:20 AM
 #10600

Is there a way to stake with a locked wallet?

I did the `walletpassphrase xxx seconds true` command, but it says the wallet is unlocked.
It should say "Unlocked for staking" right?

https://whattomine.com - Check what to mine Smiley
Pages: « 1 ... 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 [530] 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 ... 862 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!